{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {
    "execution": {
     "iopub.execute_input": "2022-05-15T08:22:36.867091Z",
     "iopub.status.busy": "2022-05-15T08:22:36.866063Z",
     "iopub.status.idle": "2022-05-15T08:22:36.871027Z",
     "shell.execute_reply": "2022-05-15T08:22:36.870385Z",
     "shell.execute_reply.started": "2022-05-15T08:22:36.867051Z"
    },
    "scrolled": true,
    "tags": []
   },
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "from scipy.sparse import diags, csr_matrix\n",
    "from scipy.sparse.linalg import spsolve, gmres, lgmres\n",
    "import matplotlib.pyplot as plt\n",
    "import scipy.sparse.linalg as spla"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "$$\n",
    "\\frac{V_{j}^{n+1}-V_{j}^{n}}{\\Delta t}=r V_{j}^{n+1}-\\frac{V_{j+1}^{n+1}-V_{j-1}^{n+1}}{2 \\Delta S} r S-\\frac{1}{2} \\frac{V_{j-1}^{n+1}-2 V_{j}^{n+1}+V_{j+1}^{n+1}}{\\Delta S^{2}} \\sigma^{2} S^{2}\n",
    "$$"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "显式格式为例\n",
    "\n",
    "倒向方程\n",
    "\n",
    "时间从后往前\n",
    "\n",
    "注意右侧是非零的Dirichlet边界条件\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {
    "execution": {
     "iopub.execute_input": "2022-05-15T08:22:36.872730Z",
     "iopub.status.busy": "2022-05-15T08:22:36.872197Z",
     "iopub.status.idle": "2022-05-15T08:22:36.890265Z",
     "shell.execute_reply": "2022-05-15T08:22:36.889458Z",
     "shell.execute_reply.started": "2022-05-15T08:22:36.872701Z"
    },
    "scrolled": true,
    "tags": []
   },
   "outputs": [],
   "source": [
    "class BS(object):\n",
    "    # Initialization of constants \n",
    "    # -V_t + rV - rSV_s - 0.5sigma^2*S^2V_ss = 0\n",
    "    # V(x,T) = VT\n",
    "    # \n",
    "    def __init__(self, uT, r, sigma2, K, S, dt, T):\n",
    "        self.sigma2 = sigma2\n",
    "        self.uT = uT\n",
    "        self.r = r \n",
    "        self.S = S   \n",
    "        self.Ns = S.size\n",
    "        self.ds = S[1]-S[0]\n",
    "        self.dt = dt  \n",
    "        self.T = T\n",
    "        self.K = K\n",
    "        self.t = np.arange(0, T+dt, dt)\n",
    "        self.Nt = self.t.size\n",
    "        self.sol = np.zeros((self.Nt, self.Ns))\n",
    "        self.sol[-1,:] = self.uT\n",
    "\n",
    "        # 一阶差分的矩阵，中心差分\n",
    "        self.D1 = diags([-1,1],[-1,1],shape=(self.Ns,self.Ns))/(2*self.ds)\n",
    "\n",
    "        # 二阶差分的矩阵\n",
    "        self.D2 = diags([1,-2,1],[-1,0,1],shape=(self.Ns,self.Ns))/(self.ds**2)\n",
    "\n",
    "        # r*S\n",
    "        self.rS = diags(self.r*self.S)\n",
    "\n",
    "        # sigma^2*S^2\n",
    "        self.sigma2S2 = diags(self.sigma2*self.S**2)\n",
    "\n",
    "    # linear operator for implicit method\n",
    "    # 返回隐式格式的lhs matrix的linear operator\n",
    "    def implicit_help(self):\n",
    "        def lhs(v):\n",
    "            vn = v - self.dt*(self.rS @ (self.D1 @ v) + 0.5*self.sigma2S2 @ (self.D2 @ v) - self.r*v)\n",
    "            return vn\n",
    "        return spla.LinearOperator((self.Ns, self.Ns), lhs)\n",
    "    \n",
    "    def SolveImplicit(self):\n",
    "        Vn = np.copy(self.uT) # v in time tn+1\n",
    "        V = np.copy(self.uT) # v in time tn\n",
    "        M = self.implicit_help()\n",
    "        for ti in range(self.Nt-2, -1, -1):\n",
    "            V_max = self.S[-1] - K*np.exp(-self.r*(self.T-self.t[ti+1]))\n",
    "            # 处理右边界\n",
    "            Vn[-1] += self.dt*(self.r * self.S[-1] * V_max / (2*self.ds) + \\\n",
    "                0.5 * self.sigma2 * self.S[-1]**2 * V_max / (self.ds**2))\n",
    "            # M*V = Vn\n",
    "            V, exitCode = gmres(M, Vn)\n",
    "            if exitCode != 0:\n",
    "                raise Exception(\"not converge for gmres!\")\n",
    "            self.sol[ti,:] = V\n",
    "            V, Vn = Vn, V\n",
    "        return \n",
    "\n",
    "\n",
    "    # 显式格式\n",
    "    def SolveExplicit(self):\n",
    "        Vn = np.copy(self.uT) # u in time tn+1\n",
    "        V = np.copy(self.uT) # u in time tn\n",
    "        # Smax = self.S[-1] + self.ds\n",
    "  \n",
    "        for ti in range(self.Nt-2, -1, -1):\n",
    "            # Vn_max = Vn[-2] + 2*self.ds\n",
    "            Vn_max = self.S[-1] - K*np.exp(-self.r*(self.T-self.t[ti+1]))\n",
    "\n",
    "            V[:] = Vn + self.dt*(self.rS @ (self.D1 @ Vn) + 0.5*self.sigma2S2 @ (self.D2 @ Vn) - self.r*Vn)\n",
    "            V[-1] = Vn[-1] + self.dt*(self.r*self.S[-1]*(Vn_max-Vn[-2])/(2*self.ds) + \n",
    "                0.5*self.sigma2*self.S[-1]**2*(Vn[-2]-2*Vn[-1]+Vn_max)/(self.ds**2)-self.r*Vn[-1])\n",
    "            self.sol[ti,:] = V\n",
    "            V, Vn = Vn, V\n",
    "        return \n",
    "    \n",
    "    def plot(self):\n",
    "        ti = [round(self.Nt*p) for p in [0.0, 0.2, 0.4, 0.6, 0.8]]\n",
    "        ti.append(self.Nt-1)\n",
    "        for i in ti:\n",
    "            plt.plot(self.S, self.sol[i,:], label=\"t={:.3f}\".format(self.t[i]))\n",
    "        plt.legend()\n",
    "        return"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {
    "execution": {
     "iopub.execute_input": "2022-05-15T08:22:36.891875Z",
     "iopub.status.busy": "2022-05-15T08:22:36.891525Z",
     "iopub.status.idle": "2022-05-15T08:22:36.938067Z",
     "shell.execute_reply": "2022-05-15T08:22:36.937378Z",
     "shell.execute_reply.started": "2022-05-15T08:22:36.891850Z"
    },
    "scrolled": true,
    "tags": []
   },
   "outputs": [],
   "source": [
    "T=2\n",
    "K=100\n",
    "sigma2 = 0.09\n",
    "r=0.04\n",
    "S = np.linspace(0, 200, 50)\n",
    "dt = 0.005\n",
    "uT = np.maximum(S-K,0)\n",
    "prob = BS(uT, r, sigma2, K, S, dt, T)\n",
    "prob.SolveExplicit()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {
    "execution": {
     "iopub.execute_input": "2022-05-15T08:22:36.939778Z",
     "iopub.status.busy": "2022-05-15T08:22:36.939241Z",
     "iopub.status.idle": "2022-05-15T08:22:37.223936Z",
     "shell.execute_reply": "2022-05-15T08:22:37.223228Z",
     "shell.execute_reply.started": "2022-05-15T08:22:36.939750Z"
    },
    "scrolled": true,
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "prob.plot()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {
    "execution": {
     "iopub.execute_input": "2022-05-15T08:23:56.182852Z",
     "iopub.status.busy": "2022-05-15T08:23:56.181417Z",
     "iopub.status.idle": "2022-05-15T08:23:56.243805Z",
     "shell.execute_reply": "2022-05-15T08:23:56.242997Z",
     "shell.execute_reply.started": "2022-05-15T08:23:56.182785Z"
    },
    "scrolled": true,
    "tags": []
   },
   "outputs": [],
   "source": [
    "T=2\n",
    "K=100\n",
    "sigma2 = 0.09\n",
    "r=0.04\n",
    "S = np.linspace(0, 200, 50)\n",
    "dt = 0.2\n",
    "uT = np.maximum(S-K,0)\n",
    "prob = BS(uT, r, sigma2, K, S, dt, T)\n",
    "prob.SolveImplicit()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {
    "execution": {
     "iopub.execute_input": "2022-05-15T08:23:57.870257Z",
     "iopub.status.busy": "2022-05-15T08:23:57.869456Z",
     "iopub.status.idle": "2022-05-15T08:23:58.101479Z",
     "shell.execute_reply": "2022-05-15T08:23:58.100711Z",
     "shell.execute_reply.started": "2022-05-15T08:23:57.870210Z"
    },
    "scrolled": true,
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "prob.plot()"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "py35-paddle1.2.0"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
